/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.beans;

import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.eventos.bc.DetalleConceptoDelegate;
import org.cip.esymons.eventos.be.DetalleConcepto;

/**
 *
 * @author oscar
 */
public class DetalleConceptoController {

    DetalleConceptoDelegate delegate;
    private DetalleConcepto detalleConcepto;
    private List<DetalleConcepto> listaDetalleConcepto;
    private String mensaje;

    public DetalleConceptoController() {
        delegate = new DetalleConceptoDelegate();
        detalleConcepto = new DetalleConcepto();
        listaDetalleConcepto = new ArrayList<DetalleConcepto>();
        listar();
        mensaje = "";
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public String guardar() {
        try {
            setMensaje(delegate.guardar(getDetalleConcepto())?"Se registro con exito":"Error al registrar los datos");
            detalleConcepto = new DetalleConcepto();
            listaDetalleConcepto = delegate.listarDetalleConcepto();
            mostrarMensaje("INFO: ", mensaje, FacesMessage.SEVERITY_INFO);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", mensaje, FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return "OK";
    }

    public DetalleConcepto getDetalleConcepto() {
        return detalleConcepto;
    }

    public void setDetalleConcepto(DetalleConcepto detalleConcepto) {
        this.detalleConcepto = detalleConcepto;
    }

    public DetalleConceptoDelegate getDelegate() {
        return delegate;
    }

    public String actualizar() {
        setMensaje(delegate.actualizar(getDetalleConcepto())?"Se actualizo con exito":"Error al actualizar los datos");
        return "OK";
    }

    public String eliminar() {
        detalleConcepto.setDcoEstado(false);
        delegate.actualizar(detalleConcepto);
        listar();
        return "OK";
    }

    public String listar() {
        listaDetalleConcepto = delegate.listarDetalleConcepto();
        return "listar";
    }

    public String cancelar() {
        detalleConcepto = new DetalleConcepto();
        setMensaje("");
        return "OK";
    }

    public String reset() {
        setMensaje("");
        try {
            detalleConcepto = delegate.buscarDetalleConcepto(detalleConcepto.getDcoCodigo());
        } catch (Exception ex) {

        }
        return "OK";
    }

    public List<DetalleConcepto> getListaDetalleConcepto() {
        return listaDetalleConcepto;
    }

    public void setListaDetalleConcepto(List<DetalleConcepto> listaDetalleConcepto) {
        this.listaDetalleConcepto = listaDetalleConcepto;
    }

    public String navegar_nuevo() {
        cancelar();
        return "nuevo";
    }

    public String navegar_editar() {
        setMensaje("");
        return "editar";
    }

    public SelectItem[] getComboDetalleConcepto() {
        //Combo de Ambientes lista todos los ambientes
        try {
            listaDetalleConcepto = new ArrayList<DetalleConcepto>();
            listaDetalleConcepto = delegate.listarDetalleConcepto();
            SelectItem[] comboDetalleConcepto;
            if (listaDetalleConcepto.size() > 0) {
                comboDetalleConcepto = new SelectItem[listaDetalleConcepto.size()];
                for (int i = 0; i < listaDetalleConcepto.size(); i++) {
                    comboDetalleConcepto[i] = new SelectItem(listaDetalleConcepto.get(i), listaDetalleConcepto.get(i).getDcoNombre());
                }
            } else {
                comboDetalleConcepto = new SelectItem[1];
                comboDetalleConcepto[0] = new SelectItem(new DetalleConcepto(), "No hay Detalle Conceptos registrados");
            }

            return comboDetalleConcepto;

        } catch (Exception e) {
            //Mensaje al usuario
            listaDetalleConcepto = new ArrayList<DetalleConcepto>();
            SelectItem[] comboDetalle = new SelectItem[1];
            comboDetalle[0] = new SelectItem(new DetalleConcepto(), "No hay Detalle Concepto");
            return comboDetalle;
        }
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

}
